<!DOCTYPE HTML>
<html>
<head>
<title>WinGetText | AutoHotkey</title>
<meta name="description" content="The WinGetText command retrieves the text from the specified window." />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>WinGetText</h1>

<p>获取指定窗口的文本.</p>

<pre class="Syntax"><span class="func">WinGetText</span>, OutputVar <span class="optional">, WinTitle, WinText, ExcludeTitle, ExcludeText</span></pre>
<h2>参数</h2>
<dl>

  <dt>OutputVar</dt>
  <dd><p>用来存储获取的文本的变量名.</p></dd>

  <dt>WinTitle</dt>
  <dd><p>窗口标题或识别目标窗口的其他条件. 请参阅 <a href="../misc/WinTitle.htm">WinTitle</a>.</p></dd>

  <dt>WinText</dt>
  <dd><p>如果使用此参数, 那么它必须是目标窗口中单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 当 <a href="DetectHiddenText.htm">DetectHiddenText</a> 的设置为 ON 时, 那么会检测到隐藏文本元素.</p></dd>

  <dt>ExcludeTitle</dt>
  <dd><p>标题中含有此参数值的窗口将被排除.</p></dd>

  <dt>ExcludeText</dt>
  <dd><p>文本中含有此参数值的窗口将被排除.</p></dd>

</dl>

<h2>错误处理</h2>
<p><span class="ver">[v1.1.04+]</span>: 此命令失败时会抛出异常. 想了解更多信息, 请参阅<a href="Catch.htm#RuntimeErrors">运行时错误</a>.</p>
<p>如果遇到问题则 <a href="../misc/ErrorLevel.htm">ErrorLevel</a> 被置为 1, 否则为 0.</p>
<h2>备注</h2>
<p>如果没有匹配的窗口, 则 <em>OutputVar</em> 被置空.</p>
<p>通常情况下获取的文本和 Window Spy 中显示的相同. 但是, 如果 <a href="DetectHiddenText.htm">DetectHiddenText</a> 为关闭状态, 那么 <em>OutputVar</em> 中会不包含隐藏文本.</p>
<p>每个文本元素都以回车换行符(CR+LF) 结束, 它们在脚本中表示为 `r`n. 要提取个别行或子字符串, 请使用类似 <a href="InStr.htm">InStr()</a> 和 <a href="SubStr.htm">SubStr()</a> 的命令或内置函数. 还可以使用<a href="LoopParse.htm">解析循环</a>来逐个检查每行或每个单词.</p>
<p>如果获取的文本看起来像被截短了(不完整), 请在 WinGetText 前尝试使用 <code><a href="VarSetCapacity.htm">VarSetCapacity</a>(OutputVar, 55)</code> [把 55 替换为超过截短文本许多的大小]. 在一些应用程序不能正确响应 WM_GETTEXTLENGTH 消息时需要这样, 否则会导致 AutoHotkey 把输出变量设的过小以致无法保存所有的文本.</p>
<p>可获取的最多文本数限制于变量的最大容量(这可以通过 <a href="_MaxMem.htm">#MaxMem</a> 指令改变). 因此, 如果目标窗口(例如打开了大文档的编辑器) 包含大量文本, 那么此命令可能会使用大量的内存. 要避免这种情况, 考虑使用 <a href="ControlGetText.htm">ControlGetText</a> 只获取部分的窗口文本. 在任何情况下, 可以为变量赋值为空来释放它占用的内容, 即 <code>OutputVar =</code>.</p>
<p>要获取窗口中所有控件的列表, 请参照此例: <code><a href="WinGet.htm">WinGet</a>, OutputVar, ControlList, WinTitle</code></p>
<p>窗口标题和文本是区分大小写的. 只有在打开 <a href="DetectHiddenWindows.htm">DetectHiddenWindows</a> 设置时, 才能检测到隐藏窗口.</p>

<h2>相关</h2>
<p><a href="ControlGetText.htm">ControlGetText</a>, <a href="WinGetActiveStats.htm">WinGetActiveStats</a>, <a href="WinGetActiveTitle.htm">WinGetActiveTitle</a>, <a href="WinGetTitle.htm">WinGetTitle</a>, <a href="WinGetPos.htm">WinGetPos</a>, <a href="_MaxMem.htm">#MaxMem</a></p>
<h2>示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>Run, Calc.exe
WinWait, Calculator
WinGetText, text  <em>; 使用前面找到的窗口.</em>
MsgBox, The text is:`n%text%</pre>
</div>

</body>
</html>